/* 
  1、函数执行，首先看函数名前面是否有 “.”，有的话，"."前面是谁this就是谁，没有的话this就是window
*/

function fn() {
  console.log(this);
}

var obj = {
  fn: fn
}
fn(); // this -> window
obj.fn(); // this -> obj

// --------------------------------------------------------
function sum() {
  fn(); // this -> window
}
sum();

// ----------------------------------------------------------
var oo = {
  sum: function () {
    fn(); // this -> window
  }
}
oo.sum();

/* 
  2、自执行函数中的this永远是window
*/

/* 
  3、给元素的某一个事件绑定方法，当事件触发的时候，执行对应的方法，方法中的this
  就是当前的元素
*/
document.getElementById("div1").onclick = fn; // fn中的this是#div1
document.getElementById("div1").onclick = function () {
  fn(); // fn中的this是window
};